#ifndef GAMEBOARD_H
#define GAMEBOARD_H

#include <QWidget>
#include <QPainter>
#include <QMouseEvent>
#include <QMessageBox>

// 棋盘大小常量
const int BOARD_SIZE = 15;  // 15x15棋盘
const int CELL_SIZE = 30;   // 每个格子的像素大小
const int BOARD_MARGIN = 30; // 棋盘边距

// 棋子状态枚举
enum StoneState {
    EMPTY = 0,      // 空位
    BLACK = 1,      // 黑棋
    WHITE = 2       // 白棋
};

class GameBoard : public QWidget
{
    Q_OBJECT

public:
    explicit GameBoard(QWidget *parent = nullptr);

signals:
    void gameOver(int winner);  // 游戏结束信号，参数为获胜方

public slots:
    void resetGame();           // 重置游戏

protected:
    void paintEvent(QPaintEvent *event) override;     // 绘制事件
    void mousePressEvent(QMouseEvent *event) override; // 鼠标点击事件

private:
    int board[BOARD_SIZE][BOARD_SIZE];  // 棋盘数组
    bool isBlackTurn;                   // 是否轮到黑棋
    bool gameOverFlag;                  // 游戏是否结束

    int getNearestPoint(int x, int y);  // 获取最近的棋盘点
    bool checkWin(int row, int col);    // 检查是否获胜
    bool checkLine(int row, int col, int dr, int dc); // 检查某条线上的连子
    void drawBoard(QPainter &painter);  // 绘制棋盘
    void drawStones(QPainter &painter); // 绘制棋子
};

#endif // GAMEBOARD_H
